const jwtKoa = require("koa-jwt"); // 用于路由权限控制
const jwt = require("jsonwebtoken"); // 用于签发、解析`token`
/* jwt密钥 */
const secret = "douya_blog";

/* 当token验证异常时候的处理，如token过期、token错误 */
const errToken = (ctx, next) => {
  return next().catch((err) => {
    if (err.status === 401) {
      ctx.status = 401;
      ctx.body = {
        code: 401,
        data: `登录失效`,
        msg: err.originalError ? err.originalError.message : err.message,
      };
    } else {
      throw err;
    }
  });
};
/* 路由权限控制 */
const noToken =   jwtKoa({ secret: secret }).unless({
    // 设置login、register接口，可以不需要认证访问
    path: [
      /^\/userInfo\/login/,
      // /^\/api\/register/,
      // /^((?!\/api).)*$/   // 设置除了私有接口外的其它资源，可以不需要认证访问
    ],
  })

function getToken(payload = {}){
  return jwt.sign(payload, secret, { expiresIn: "1h" });
}

module.exports={
    errToken,
    noToken,
    getToken
}